home *** CD-ROM | disk | FTP | other *** search
/ Aminet 34 / Aminet 34 (2000)(Schatztruhe)[!][Dec 1999].iso / Aminet / dev / misc / WHDLoad_dev.lha / WHDLoad / Src / slave-examples / oscar.asm < prev    next >
Encoding:
Assembly Source File  |  1999-05-09  |  3.7 KB  |  156 lines

  1. ;*---------------------------------------------------------------------------
  2. ;  :Program.    oscar.asm
  3. ;  :Contents.    Slave for "Oscar"
  4. ;  :Author.    Wepl
  5. ;  :Version.    $Id: oscar.asm 1.5 1999/05/09 13:30:28 jah Exp jah $
  6. ;  :History.    20.05.96
  7. ;        16.06.97 updated for slave version 2
  8. ;        15.08.97 update for key managment
  9. ;        15.07.98 cache on 68040+ disabled
  10. ;        08.05.99 adapted for WHDLoad 10.0, access faults removed
  11. ;  :Requires.    -
  12. ;  :Copyright.    Public Domain
  13. ;  :Language.    68000 Assembler
  14. ;  :Translator.    Barfly V1.131
  15. ;  :To Do.
  16. ;---------------------------------------------------------------------------*
  17.  
  18.     INCDIR    Includes:
  19.     INCLUDE    whdload.i
  20.  
  21.     IFD BARFLY
  22.     OUTPUT    "wart:n-o/oscar/Oscar.Slave"
  23.     BOPT    O+ OG+                ;enable optimizing
  24.     BOPT    ODd- ODe-            ;disable mul optimizing
  25.     BOPT    w4-                ;disable 64k warnings
  26.     SUPER                    ;disable supervisor warnings
  27.     ENDC
  28.  
  29.     STRUCTURE    globals,$100
  30.         LONG    _resload
  31.         LONG    _chipptr
  32.         LABEL    gl_ENDOF
  33.  
  34. ;============================================================================
  35.  
  36. _base        SLAVE_HEADER            ;ws_Security + ws_ID
  37.         dc.w    10            ;ws_Version
  38.         dc.w    WHDLF_NoError        ;ws_flags
  39. _upchip        dc.l    $177000            ;ws_BaseMemSize
  40.         dc.l    0            ;ws_ExecInstall
  41.         dc.w    _Start-_base        ;ws_GameLoader
  42.         dc.w    _data-_base        ;ws_CurrentDir
  43.         dc.w    0            ;ws_DontCache
  44. _keydebug    dc.b    0            ;ws_keydebug
  45. _keyexit    dc.b    $59            ;ws_keyexit = F10
  46. _expmem        dc.l    0            ;ws_ExpMem
  47.         dc.w    _name-_base        ;ws_name
  48.         dc.w    _copy-_base        ;ws_copy
  49.         dc.w    _info-_base        ;ws_info
  50.  
  51. ;============================================================================
  52.  
  53.     IFND    .passchk
  54.     DOSCMD    "WDate  >T:date"
  55. .passchk
  56.     ENDC
  57.  
  58. _data        dc.b    "data",0
  59. _name        dc.b    "Oscar",0
  60. _copy        dc.b    "1993 Flair Software",0
  61. _info        dc.b    "installed & fixed by Wepl",10
  62.         dc.b    "version 1.5 "
  63.         INCBIN    "T:date"
  64.         dc.b    0
  65.     EVEN
  66.  
  67. ;============================================================================
  68. _Start        ;    A0 = resident loader
  69. ;============================================================================
  70.  
  71.     ;save resload base
  72.         move.l    a0,(_resload)            ;save
  73.         move.l    a0,a5                ;A5 = resload
  74.  
  75.     ;set start address for emulated exec.AllocMem
  76.         move.l    #$400,(_chipptr)
  77.  
  78.     ;enable caches
  79.         move.l    #WCPUF_NWA|WCPUF_Base_WT,d0
  80.         move.l    #WCPUF_NWA|WCPUF_Base,d1
  81.         jsr    (resload_SetCPU,a5)
  82.  
  83.     ;load main
  84.         lea    (_exe,pc),a0            ;name
  85.         move.l    (_chipptr),a1            ;address
  86.         move.l    a1,a4                ;A4 = executable
  87.         jsr    (resload_LoadFileDecrunch,a5)
  88.     ;relocate main
  89.         move.l    a4,a0                ;address
  90.         sub.l    a1,a1                ;taglist
  91.         jsr    (resload_Relocate,a5)
  92.         add.l    d0,(_chipptr)
  93.     ;fix empty dbf loops
  94.         move.l    a4,a0                ;start
  95.         lea    (a0,d0.l),a1            ;end
  96.         lea    (gl_ENDOF),a2            ;temp
  97.         bsr    _dbffix
  98.     ;apply patches
  99.         lea    (_pexe,pc),a0            ;patchlist
  100.         move.l    a4,a1                ;address
  101.         jsr    (resload_Patch,a5)
  102.  
  103.         lea    ($99fc-$9b64,a4),a0
  104.         move.l    a0,d0
  105.         add.l    d0,($838,a4)            ;copylock
  106.  
  107.     ;start main
  108.         jmp    ($3e,a4)
  109.  
  110. _pexe        PL_START
  111.         PL_P    $8b4e,_allocmem            ;emulate
  112.         PL_S    $276,$2a8-$276            ;disable os-stuff
  113.         PL_P    $7b1a,_loader
  114.         PL_W    $1ce2,$e841            ;lsr.w  -> asr.w
  115.         PL_W    $1ce4,$c3fc            ;mulu   -> muls
  116.         PL_W    $1cfc,$d0c1            ;adda.l -> adda.w
  117.         PL_W    $1e0e,$e841            ;lsr.w  -> asr.w
  118.         PL_W    $1e10,$c3fc            ;mulu   -> muls
  119.         PL_W    $1e28,$d0c1            ;adda.l -> adda.w
  120.         PL_END
  121.  
  122. _allocmem    addq.l    #7,d0                ;round up
  123.         and.b    #$f8,d0
  124.  
  125.         move.l    (_chipptr),a1
  126.         add.l    d0,(_chipptr)
  127.  
  128.         move.l    a1,a0
  129.         lsr.l    #3,d0
  130. .clr        clr.l    (a0)+
  131.         clr.l    (a0)+
  132.         subq.l    #1,d0
  133.         bne    .clr
  134.         move.l    a1,d0
  135.         rts
  136.  
  137. _exe        dc.b    "exe",0
  138.  
  139. ;--------------------------------
  140.  
  141. _loader        addq.l    #4,a0                ;skip "df0:"
  142.         move.l    a2,-(a7)
  143.         move.l    (_resload),a2
  144.         jsr    (resload_LoadFileDecrunch,a2)
  145.         move.l    (a7)+,a2
  146.         moveq    #0,d0                ;return code
  147.         rts
  148.  
  149. ;============================================================================
  150.  
  151.         INCLUDE    sources:whdload/dbffix.s
  152.  
  153. ;============================================================================
  154.  
  155.     END
  156.